#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

//引脚编号设置
#define R 13
#define G 19
#define B 26

void signal_handler(int signo)
{
    //清楚引脚
    softPwmWrite(R,0);
    softPwmWrite(G,0);
    softPwmWrite(B,0);

    pinMode(R,INPUT);
    pinMode(G,INPUT);
    pinMode(B,INPUT);
    exit(0);
}


int main()
{
    signal(SIGINT,signal_handler);
    //初始化引脚 使用BCM编码方式
    if(wiringPiSetupGpio()<0)
    {
        printf("引脚初始化失败\n");
    }

    //设置引脚为输出模式
    pinMode(R,OUTPUT);
    pinMode(B,OUTPUT);
    pinMode(G,OUTPUT);

    softPwmCreate(R,0,100);
    softPwmCreate(G,0,100);
    softPwmCreate(B,0,100);

    //循环亮灯 每种灯光持续一秒
    while(1)
    {
        int led[3] = {R,G,B};
        for(int i=0;i<3;i++)
        {
            int j = 0;
            for(;j<100;j++)
            {
                softPwmWrite(led[i],j);
                usleep(50000);
            }
            for(;j>=0;j--)
            {
                softPwmWrite(led[i],j);
                usleep(50000);
            }

        }
    }
    return 0;
}